from openpyxl import Workbook
from openpyxl.chart import Series, Reference, BubbleChart

# 创建工作表
wb = Workbook()
ws = wb.active

# 创建数据
rows = [
    ("Number of Products", "Sales in USD", "Market share"),
    (14, 12200, 15),
    (20, 60000, 33),
    (18, 24400, 10),
    (22, 32000, 42),
    (),
    (12, 8200, 18),
    (15, 50000, 30),
    (19, 22400, 15),
    (25, 25000, 50),
]
# 追加数据到工作表
for row in rows:
    ws.append(row)

# 创建气泡图
chart = BubbleChart()
chart.style = 18  # use a preset style

# add the first series of data
# 提起第1列,第2-5行的值作为x轴数据
xvalues = Reference(ws, min_col=1, min_row=2, max_row=5)
# 地区第2列,第2-5行的值作为y轴数据
yvalues = Reference(ws, min_col=2, min_row=2, max_row=5)
# 提起第3列,第2-5行的值作为气泡图的大小
size = Reference(ws, min_col=3, min_row=2, max_row=5)
# 系列:y轴数据,x轴数据,z轴数据,标题
series = Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2013")
# 向气泡图中追加一个系列
chart.series.append(series)

# add the second
# 提取第1列,第7-10行的值最为第二个图的x轴数据
xvalues = Reference(ws, min_col=1, min_row=7, max_row=10)
# 提取第2列,第7-10行的值作为第二个图的x轴数据
yvalues = Reference(ws, min_col=2, min_row=7, max_row=10)
# 提起第3列,第7-10行的值作为z轴数据
size = Reference(ws, min_col=3, min_row=7, max_row=10)
# 创建一个系列
series = Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2014")
# 向图表中追加一个系列
chart.series.append(series)

# place the chart starting in cell E1
# 将图表追加到工作表中
ws.add_chart(chart, "E1")

# 保存Excel
wb.save("bubble.xlsx")
